1. Field of the Invention
The present invention relates to adding additional features to computer systems. More particularly, this invention relates to a system and method for adding additional functionality to computer systems without the need for rebuilding the entire system. This invention further relates to improved functions for manipulating text, associating sound with given portions of text, and adding multilingual capability to computers.
2. Background Information
The addition of functionality is typically a high priority in the design of modern computer systems. The addition of functions to computer systems has been typically performed at two levels: (1) user-generated addition of functions; and (2) changes to the computer system software. User-generated additions of functionality are typically performed using "macro" commands. Macro commands are a series of steps or instructions in the language of the underlying system. Macros are executed by the underlying system software using a scripting function or other interpretive-based activity which takes each instruction generated by the user and performs the required function. As can be appreciated by one skilled in the art, this approach has the limitation that the user is subject to the functionality of the underlying computer system. In other words, features which are not supported by the underlying system will not be able to be performed. Therefore, macro-based additions of user functionality are intimately tied to the underlying system software. For example, in a system which does not support mathematical functions, if a user desires to perform some arithmetic using macros, those functions will be unavailable to him.
Another disadvantage of the macro-based functions is that lower level operations than that provided by the underlying system are not accessible to the user. If the underlying system software does not provide access to certain data items residing in memory or computer registers, then those data items will also not be accessible to the user in his macro program.
Yet another disadvantage of using macros to add functionality to computer systems is that the execution of macro functions by the computer system are typically executed using an interpretive function. In other words, the macro commands are read in as text, and the text is parsed by the underlying computer system. Then the parsed commands are executed. The commands which comprise the macro typically are not transformed into machine executable object code or a similar low-level sequence of instructions. As a result of these parsing and interpretive functions, significant performance penalties are incurred while executing user-generated macros. Performance penalties may be minimized by adding functionality using compiled program modules.
An alternative way to add functionality to computer systems is for the user to generate his own routines in a suitable computer source code, compile, and link those routines. Of course, if an entirely new program is generated, the user must generate all the underlying low-level functions which are required by the system. The user cannot take advantage of the powerful features offered by an existing system. This is a very time consuming and complex task and requires an intimate understanding of the underlying computer system. This approach, however, does provide the utmost flexibility and functionality, as it provides all the power of the computer system at the disposal of the programmer (provided that the required features are available in the underlying source code).
An alternative way to add functionality to an existing computer system is to develop functions which operate in conjunction with an existing computer program. This will allow the user to take advantage of the functions provided by the existing program, yet retain the utmost flexibility in generating his own functions. This approach suffers from the deficiency that a thorough knowledge of the existing system is required. This approach also suffers from several other disadvantages. One shortcoming is that the existing source and/or object code of the program must be available to the user in order for him to add functions which operate in conjunction with it. This is necessary because the user's functions, once they have been generated and compiled into object code, must be linked with the existing system's object code. Alternatively, the user may wish to make modifications to the existing software itself in order to add the functions he desires. Therefore, the source code of the software will be required. If changes are made to the source code, an even more lengthy process of compiling the source and linking object code modules of the existing system will be required along with the new functions generated by the user. This process is not only difficult and time consuming, it also is very error-prone.
Another disadvantage of this approach, from the computer system developer's point of view, is that the underlying source code of his system must be available to the user. In a commercial context, where thousands of man hours have gone into development of such a system, that approach is not desirable. Trade secret or other proprietary information may be disclosed, and/or the competitive advantage of the developer may be affected. A balance between maintaining the expandability of computer system functions along with protecting the computer system developer's interest must therefore be achieved. Thus, current state-of-the-art techniques are inadequate for maximizing the capability of user-generated functions added to existing computer systems, while preserving the fights of the underlying computer system developer.
Another shortcoming of existing computer systems is that there is typically no distinction between text which is written in one language versus text which is written in another. For instance, one document may contain text written in many different languages. So, when the user wishes to proofread the document, he will be checking the document for accuracy in many different languages. Modem day text processing systems generally provide capabilities such as spell checking and/or word lookup in a thesaurus for synonyms of words. In a multilingual document, such spell checking and thesaurus capabilities fall short because no indication is given that text in one portion of a document is written in one language and text in another portion of the document is written in another language. The user has the option in existing systems of proofreading the document manually or only using the spell checker and/or thesaurus on areas of text that are written in the language of the dictionary or the thesaurus. This requires that substantial user intervention take place in that the user must instruct the program to only check given portions of text. This is an error-prone and time consuming process.
Yet another disadvantage of existing systems is that lack of on-screen cues for reformatting documents. One typical way in which documents are reformatted is by entering new page margins manually. This does not give the user the opportunity to view the changes to the document right on the screen. Typically, a delay or other time period transpires between when the new formatting options are input to the computer system, and when the on-screen text is updated. Yet another way in which documents are reformatted is through the use of a "ruler guide." The system typically displays a "ruler" or a scale in which various formatting options may be referenced. Typically, formatting options are represented on the "ruler" in a manner that corresponds with the position of margins and/or tab stops in the document that the user is viewing. However, the adjustment of the features are not readily apparent on the document itself. In other words, rulers and tab stop markers on the ruler may be adjusted, however, those changes are not viewable in the document until the system updates the text.
Yet another disadvantage of existing text processing systems is the lack of an ability to associate sound with given portions of the text. A user may desire to open a document open for comment from other users, and provide feedback to the author of the text. The feedback may come in the form of text entered by the reviewing personnel or in the form of sound samples giving special instructions to the author or secretarial personnel who are updating the text contained within the document.
Another shortcoming of existing text processing systems is the ability to effectively integrate tables of information within documents. For instance, a user may wish to include within his document a multicolumnar table containing various information. Typically, such prior approaches to inserting data have required that the user specify certain tab stops at which each column of the table will reside. Therefore, if the formatting of the document changes (for instance, a column becomes too narrow or a column becomes too wide) substantial reformatting of the document must take place. This includes, among other things, moving data which resides in one column in a first row to a second row in the same column to prevent the data in that column from running into the adjacent column. Therefore, improved methods of formatting multicolumnar data within a document is required.